解釋JAVA程式碼~![]()
真的是有夠硬的喔~
可以真的跑出甚麼的~
才不會看不下去![]()
程式碼
package collection;
import java.util.HashSet;
public class Set01 {
public static void main(String[] args) {
//java本身定義的數字,字串型態-->已內訂比較模式(值)
HashSet<String> hs = new HashSet<>();
System.out.println(hs.add("JAVA"));
hs.add("C++");
hs.add(null);
hs.add("100");
hs.add("Android");
System.out.println(hs);
System.out.println(hs.remove("100"));
System.out.println(hs);
hs.add("Android");
hs.add("JAVA");
System.out.println(hs);
System.out.println("--------------");
HashSet<Integer> hs2 = new HashSet<>();
hs2.add(100);
hs2.add(56);
hs2.add(70);
hs2.add(100);
hs2.add(70);
hs2.add(60);
System.out.println(hs2);
System.out.println("--------------");
HashSet<Pen> hs3 = new HashSet<>();
hs3.add(new Pen());
hs3.add(new Pen());
hs3.add(new Pen());
hs3.add(new Pen());
System.out.println(hs3);
}
}
//--------------------------
class Pen{
@Override
public String toString() {
return "Pen Object";
}
//不要同時修改hashCode() / equals(Object obj)
@Override
public int hashCode() {
return 10;//不取得記憶體位址,而直接回傳10
}
@Override
public boolean equals(Object obj) {
return true;//不比對記憶體,而直接回傳true-->代表二者相同
}
}
顯示
解釋程式碼
這段Java程式碼主要示範了如何使用 HashSet 這個集合類別,以及一些相關的概念。以下是程式碼的解釋:
首先,建立了一個 HashSet 物件 hs,用來存放字串(String)型態的元素。
使用 add 方法將幾個元素加入到 hs 中,這些元素包括 "JAVA"、"C++"、null、"100" 和 "Android"。
使用 System.out.println(hs) 輸出 hs 的內容,HashSet 不保證元素的順序,所以輸出的順序可能不同。
使用 remove 方法移除一個元素 "100",並再次輸出 hs。
接著再次加入 "Android" 和 "JAVA" 兩個元素到 hs,輸出最終的 hs。
建立了另一個 HashSet 物件 hs2,這次用來存放整數(Integer)型態的元素,並加入了幾個整數。
輸出 hs2 的內容。
最後,建立了一個 HashSet 物件 hs3,用來存放自定義的 Pen 物件。這部分示範了自定義類別如何在 HashSet 中使用。
Pen 類別有覆寫(override)了 toString、hashCode 和 equals 方法。這些方法的覆寫使得 HashSet 可以正確處理 Pen 物件的比較和哈希碼計算。
總結來說,這段程式碼示範了如何使用 HashSet 存儲不同型態的元素,以及如何自定義類別以適當方式使用 HashSet 集合。HashSet 用來存儲不重複的元素,並且不保證元素的順序。
![]()
![]()
謝謝收看![]()